import { request } from "./index";
// 引入进度条模块包和它的css样式
import nprogress from "nprogress";
import "nprogress/nprogress.css";
import store from "@/store";

// 配置请求拦截器
request.interceptors.request.use((config) => {
    // 只要发送请求就开启进度条
    nprogress.start();

    //获取用户临时身份信息的值,然后随着header的[userTempId]字段发送
    let userTempId = store.state.user.userTempId;
    config.headers.userTempId = userTempId;
    //如果用户登录了,我们需要在header中携带token(用来请求后端数据时进行鉴权操作)
    const token = store.state.user.token;
    config.headers.token = token;
    return config;
});

// 响应拦截器
request.interceptors.response.use(
    (response) => {
        // console.log(response, "response");
        // 只要进入拦截器就关闭进度条
        nprogress.done();

        // 因为请求成功不代表是我们需要的结果，我们需要的结果是在后端返回的数据中，code也是200的时候
        if (response.data.code === 200) {
            return response.data.data;
        } else {
            // 如果成功响应的结果不是我们想要的，我们需要一个响应失败的promise实例，供请求的地方进行处理
            // 因为所有的错误对象都有一个message属性，为了方便统一处理，我们抛出错误的时候需要把错误包装成一个对象，内部有message属性
            return Promise.reject({ message: response.data.message });
        }
    },
    (error) => {
        nprogress.done();
        return Promise.reject(error);
    }
);
export default request;
// 这里导出的request才是真正发请求的